package cn.okcode.slowjson;

import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.io.IOException;

public class PdfConvert {
    public static void main(String[] args) throws IOException {
        //writeImage();
        //writeParagraph();
        writeTable();
    }

    private static void writeImage() {
        System.out.println("Images");

        String baseDir = "C:\\Users\\pyk13\\Pictures\\山峰\\";

        // step 1: creation of a document-object
        Document document = new Document();

        try {
            // step 2:
            // we create a writer that listens to the document
            // and directs a PDF-stream to a file
            PdfWriter.getInstance(document, new FileOutputStream("Images.pdf"));

            // step 3: we open the document
            document.open();

            // step 4:
            document.add(new Paragraph("<%@page import=\"ext.caic.changeManager.util.*\"%>\n" +
                    "<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\"\n" +
                    "    pageEncoding=\"UTF-8\"%>\n" +
                    "\n" +
                    "<% \n" +
                    "    // 同步ECP中更改验证大纲的历史数据\n" +
                    "    \n" +
                    "    String cmd = request.getParameter(\"cmd\"); \n" +
                    "    String filename = request.getParameter(\"filename\");\n" +
                    "    \n" +
                    "    ECPHistoryTool tool = new ECPHistoryTool();\n" +
                    "    tool.process(new String[]{ cmd,filename});\n" +
                    "\tresponse.getWriter().write(\"----ECPHistoryTool------><br>\" + tool.sb.toString());\n" +
                    "%>\n" +
                    "\n" +
                    "<html>\n" +
                    "    <body>\n" +
                    "    </body>\n" +
                    "</html>"));
            Image jpg = Image.getInstance(baseDir + "山.jpg");
            jpg.scaleToFit(500, 500);
            document.add(jpg);

            Image jpg1 = Image.getInstance(baseDir + "雀儿山.jpg");
            jpg1.scaleToFit(500, 500);
            document.add(jpg1);
            //document.add(new Paragraph("getacro.gif"));
            //Image gif = Image.getInstance("getacro.gif");
            //document.add(gif);
            //document.add(new Paragraph("pngnow.png"));
            //Image png = Image.getInstance("pngnow.png");
            //document.add(png);
            //document.add(new Paragraph("iText.bmp"));
            //Image bmp = Image.getInstance("iText.bmp");
            //document.add(bmp);
            //document.add(new Paragraph("iText.wmf"));
            //Image wmf = Image.getInstance("iText.wmf");
            //document.add(wmf);
            //document.add(new Paragraph("iText.tif"));
            //Image tif = Image.getInstance("iText.tif");
            //document.add(tif);
        } catch (DocumentException de) {
            System.err.println(de.getMessage());
        } catch (IOException ioe) {
            System.err.println(ioe.getMessage());
        }

        // step 5: we close the document
        document.close();
    }

    private static void writeParagraph() {
        System.out.println("the Paragraph object");

        // step 1: creation of a document-object
        Document document = new Document();
        try {
            // step 2:
            // we create a writer that listens to the document
            PdfWriter.getInstance(document, new FileOutputStream("Paragraphs.pdf"));

            // step 3: we open the document
            document.open();
            // step 4:
            Paragraph p1 = new Paragraph(new Chunk(
                    "This is my first paragraph. ",
                    FontFactory.getFont(FontFactory.HELVETICA, 10)));
            p1.add("The leading of this paragraph is calculated automagically. ");
            p1.add("The default leading is 1.5 times the fontsize. ");
            p1.add(new Chunk("You can add chunks "));
            p1.add(new Phrase("or you can add phrases. "));
            p1.add(new Phrase(
                    "Unless you change the leading with the method setLeading, the leading doesn't change if you add text with another leading. This can lead to some problems.",
                    FontFactory.getFont(FontFactory.HELVETICA, 18)));
            document.add(p1);
            Paragraph p2 = new Paragraph(new Phrase(
                    "This is my second paragraph. ", FontFactory.getFont(
                    FontFactory.HELVETICA, 12)));
            p2.add("As you can see, it started on a new line.");
            document.add(p2);
            Paragraph p3 = new Paragraph("This is my third paragraph.",
                    FontFactory.getFont(FontFactory.HELVETICA, 12));
            document.add(p3);
        } catch (DocumentException de) {
            System.err.println(de.getMessage());
        } catch (IOException ioe) {
            System.err.println(ioe.getMessage());
        }

        // step 5: we close the document
        document.close();
    }

    private static void writeTable() {
        // step 1: creation of a document-object
        Document document = new Document();
        try {
            // step 2:
            // we create a writer that listens to the document
            PdfWriter.getInstance(document, new FileOutputStream("Tables.pdf"));

            // step 3: we open the document
            document.open();
            PdfPTable table = new PdfPTable(3);
            PdfPCell cell =
                    new PdfPCell(new Paragraph("header with colspan 3"));
            cell.setColspan(3);
            table.addCell(cell);
            table.addCell("1.1");
            table.addCell("2.1");
            table.addCell("3.1");
            table.addCell("1.2");
            table.addCell("2.2");
            table.addCell("3.2");
            document.add(table);
        } catch (DocumentException de) {
            System.err.println(de.getMessage());
        } catch (IOException ioe) {
            System.err.println(ioe.getMessage());
        }
        // step 5: we close the document
        document.close();
    }
}
